package com.wy.System.Print.consolePrint;

import org.junit.Test;

public class DeleteCharter {

    /**
     * 原理就是这样
     */
    public void principle() {
        System.out.println("1234\b123");
    }

    @Test
    public void pattern1() throws InterruptedException {
        for (int i = 0; i < 10; i++) {
            System.out.print("这是第" + i + "次输出");
            Thread.sleep(1000);
            System.out.print("\b\b\b\b\b\b\b");
        }
    }

    public static void main(String[] args) throws InterruptedException {
        DeleteCharter deleteCharter = new DeleteCharter();
        deleteCharter.pattern2();
    }

    /**
     * 看这个案例，会严格按照 "\r" 的逻辑，将光标移动到 第一位。  逐个字符串进行覆盖，
     * 但是在idea的控制台做了处理，看到/r 直接就将本行字符串全部删除，重新输入！！！
     * window的终端和  idea的控制台输出是不一样的！！
     * @throws InterruptedException
     */
    @Test
    public void pattern2() throws InterruptedException {
        System.out.println("abcde\r123");    //	123de 		1取代a，2取代b，3取代c，de不变
        System.out.println("abcde\r\r123");        // 123de		1取代a，2取代b，3取代c，de不变
        System.out.println("abcde\r\r\r123");            // 123de   1取代a，2取代b，3取代c，de不变
        System.out.println("abcde\r\r\r\r\r\r123");        // 123de   1取代a，2取代b，3取代c，de不变


        System.out.println("abcde\r\r\r12345678");        // 12345678   1取代a，2取代b，3取代c，de不变
        System.out.println("abcde\r\r\r\r\r\r1234");        // 1234e   1取代a，2取代b，3取代c，de不变

        System.out.print(1234567890L);
        Thread.sleep(1000);
        System.out.print("\r");
        System.out.print("测试");
        for (int i = 5; i > 0; i--) {
            System.out.print(i+1);
            Thread.sleep(1000);
        }
    }
}
